#include "key.h"

// 扫描按键，返回按下的按键值，如果没有按键按下，则返回
int32_t key_scan(void)
{
    int32_t key_value = KEY_VALUE_NONE;
    if (HAL_GPIO_ReadPin(GPIO_KEY_1_GPIO_Port, GPIO_KEY_1_Pin) == GPIO_PIN_RESET) {
        delay_ms(100);
        if (HAL_GPIO_ReadPin(GPIO_KEY_1_GPIO_Port, GPIO_KEY_1_Pin) == GPIO_PIN_RESET) {
            while (HAL_GPIO_ReadPin(GPIO_KEY_1_GPIO_Port, GPIO_KEY_1_Pin) == GPIO_PIN_RESET);
            return key_value = KEY_VALUE_1;
        }
    }

    if (HAL_GPIO_ReadPin(GPIO_KEY_2_GPIO_Port, GPIO_KEY_2_Pin) == GPIO_PIN_RESET) {
        delay_ms(100);
        if (HAL_GPIO_ReadPin(GPIO_KEY_2_GPIO_Port, GPIO_KEY_2_Pin) == GPIO_PIN_RESET) {
            while (HAL_GPIO_ReadPin(GPIO_KEY_2_GPIO_Port, GPIO_KEY_2_Pin) == GPIO_PIN_RESET);
            return key_value = KEY_VALUE_2;
        }
    }

    if (HAL_GPIO_ReadPin(GPIO_KEY_3_GPIO_Port, GPIO_KEY_3_Pin) == GPIO_PIN_RESET) {
        delay_ms(100);
        if (HAL_GPIO_ReadPin(GPIO_KEY_3_GPIO_Port, GPIO_KEY_3_Pin) == GPIO_PIN_RESET) {
            while (HAL_GPIO_ReadPin(GPIO_KEY_3_GPIO_Port, GPIO_KEY_3_Pin) == GPIO_PIN_RESET);
            return key_value = KEY_VALUE_3;
        }
    }

    if (HAL_GPIO_ReadPin(GPIO_KEY_4_GPIO_Port, GPIO_KEY_4_Pin) == GPIO_PIN_RESET) {
        delay_ms(100);
        if (HAL_GPIO_ReadPin(GPIO_KEY_4_GPIO_Port, GPIO_KEY_4_Pin) == GPIO_PIN_RESET) {
            while (HAL_GPIO_ReadPin(GPIO_KEY_4_GPIO_Port, GPIO_KEY_4_Pin) == GPIO_PIN_RESET);
            return key_value = KEY_VALUE_4;
        }
    }

    if (HAL_GPIO_ReadPin(GPIO_KEY_5_GPIO_Port, GPIO_KEY_5_Pin) == GPIO_PIN_RESET) {
        delay_ms(100);
        if (HAL_GPIO_ReadPin(GPIO_KEY_5_GPIO_Port, GPIO_KEY_5_Pin) == GPIO_PIN_RESET) {
            while (HAL_GPIO_ReadPin(GPIO_KEY_5_GPIO_Port, GPIO_KEY_5_Pin) == GPIO_PIN_RESET);
            return key_value = KEY_VALUE_5;
        }
    }

    return KEY_VALUE_NONE;
}
